Design a special dictionary that searches the words in it by a prefix and a suffix.
Implement the WordFilter
class:
WordFilter(string[] words)
Initializes the object with thewords
in the dictionary.f(string pref, string suff)
Returns the index of the word in the dictionary, which has the prefixpref
and the suffixsuff
. If there is more than one valid index, return the largest of them. If there is no such word in the dictionary, return-1
.
Input: ["WordFilter", "f"] [[["apple"]], ["a", "e"]] Output: [null, 0] Explanation: WordFilter wordFilter = new WordFilter(["apple"]); wordFilter.f("a", "e"); // return 0, because the word at index 0 has prefix = "a" and suffix = "e".
1 <= words.length <= 104
1 <= words[i].length <= 7
1 <= pref.length, suff.length <= 7
words[i]
,pref
andsuff
consist of lowercase English letters only.- At most
104
calls will be made to the functionf
.
classWordFilter: def__init__(self, words: List[str]): self.hashmap= {} foriinrange(len(words)): prefs= [words[i][:j+1] forjinrange(len(words[i]))] suffs= [words[i][-j-1:] forjinrange(len(words[i]))] forprefinprefs: forsuffinsuffs: self.hashmap[(pref, suff)] =ideff(self, pref: str, suff: str) ->int: returnself.hashmap.get((pref, suff), -1) # Your WordFilter object will be instantiated and called as such:# obj = WordFilter(words)# param_1 = obj.f(pref,suff)